﻿// // ******************************************************************
// //       /\ /|       @file       JellyfinSessionInfoDto.cs
// //       \ V/        @brief      await29
// //       | "")       @author     Await, 285283010@qq.com
// //       /  |
// //      /  \\        @Modified   2024-11-10 16:11
// //    *(__\_\        @Copyright  Copyright (c) , 2024-11-10 14:11 Await
// // ******************************************************************

namespace AutomaticSubtitles.Contracts.Dto.Jellyfin;

public class JellyfinSessionInfoDto
{
    /// <summary>
    /// Gets or sets the remote end point.
    /// </summary>
    /// <value>Gets or sets the remote end point.</value>
    public string RemoteEndPoint { get; set; }

    /// <summary>
    /// Gets or sets the id.
    /// </summary>
    /// <value>Gets or sets the id.</value>
    public string Id { get; set; }

    /// <summary>
    /// Gets or sets the user id.
    /// </summary>
    /// <value>Gets or sets the user id.</value>
    public string UserId { get; set; }

    /// <summary>
    /// Gets or sets the username.
    /// </summary>
    /// <value>Gets or sets the username.</value>
    public string UserName { get; set; }

    /// <summary>
    /// Gets or sets the type of the client.
    /// </summary>
    /// <value>Gets or sets the type of the client.</value>
    public string Client { get; set; }

    /// <summary>
    /// Gets or sets the last activity date.
    /// </summary>
    /// <value>Gets or sets the last activity date.</value>
    public DateTime LastActivityDate { get; set; }

    /// <summary>
    /// Gets or sets the last playback check in.
    /// </summary>
    /// <value>Gets or sets the last playback check in.</value>
    public DateTime LastPlaybackCheckIn { get; set; }

    /// <summary>
    /// Gets or sets the last paused date.
    /// </summary>
    /// <value>Gets or sets the last paused date.</value>
    public DateTime? LastPausedDate { get; set; }

    /// <summary>
    /// Gets or sets the name of the device.
    /// </summary>
    /// <value>Gets or sets the name of the device.</value>
    public string DeviceName { get; set; }

    /// <summary>
    /// Gets or sets the type of the device.
    /// </summary>
    /// <value>Gets or sets the type of the device.</value>
    public string DeviceType { get; set; }

    /// <summary>
    /// Gets or sets the device id.
    /// </summary>
    /// <value>Gets or sets the device id.</value>
    public string DeviceId { get; set; }

    /// <summary>
    /// Gets or sets the application version.
    /// </summary>
    /// <value>Gets or sets the application version.</value>
    public string ApplicationVersion { get; set; }

    /// <summary>
    /// Gets or sets a value indicating whether this session is active.
    /// </summary>
    /// <value>Gets or sets a value indicating whether this session is active.</value>
    public bool IsActive { get; set; }

    /// <summary>
    /// Gets or sets a value indicating whether the session supports media control.
    /// </summary>
    /// <value>Gets or sets a value indicating whether the session supports media control.</value>
    public bool SupportsMediaControl { get; set; }

    /// <summary>
    /// Gets or sets a value indicating whether the session supports remote control.
    /// </summary>
    /// <value>Gets or sets a value indicating whether the session supports remote control.</value>
    public bool SupportsRemoteControl { get; set; }


    /// <summary>
    /// Gets or sets a value indicating whether the session has a custom device name.
    /// </summary>
    /// <value>Gets or sets a value indicating whether the session has a custom device name.</value>
    public bool HasCustomDeviceName { get; set; }

    /// <summary>
    /// Gets or sets the playlist item id.
    /// </summary>
    /// <value>Gets or sets the playlist item id.</value>
    public string PlaylistItemId { get; set; }

    /// <summary>
    /// Gets or sets the server id.
    /// </summary>
    /// <value>Gets or sets the server id.</value>
    public string ServerId { get; set; }

    /// <summary>
    /// Gets or sets the user primary image tag.
    /// </summary>
    /// <value>Gets or sets the user primary image tag.</value>
    public string UserPrimaryImageTag { get; set; }
}